/* 定义外设的基地址 */
.macro	dev_define	name,	addr
	.global	\name
	.type	\name,	%object
	.set	\name,	\addr
.endm

/* Memory */
dev_define SOC_FLASH      , 0x08000000
dev_define SOC_SRAM       , 0x20000000
dev_define SOC_CCM        , 0x10000000
/* Peripheral */
/* APB1 */
dev_define SOC_TIM2       , 0x40000000
dev_define SOC_TIM3       , 0x40000400
dev_define SOC_TIM4       , 0x40000800
dev_define SOC_TIM5       , 0x40000C00
dev_define SOC_TIM6       , 0x40001000
dev_define SOC_TIM7       , 0x40001400
dev_define SOC_TIM12      , 0x40001800
dev_define SOC_TIM13      , 0x40001C00
dev_define SOC_TIM14      , 0x40002000
dev_define SOC_RTC_BKP    , 0x40002800
dev_define SOC_WWDG       , 0x40002800
dev_define SOC_IWDG       , 0x40003000
dev_define SOC_I2S2_EXT   , 0x40003400
dev_define SOC_SPI2_I2S2  , 0x40003800
dev_define SOC_SPI3_I2S3  , 0x40003C00
dev_define SOC_I2S3_EXT   , 0x40004000
dev_define SOC_USART2     , 0x40004400
dev_define SOC_USART3     , 0x40004800
dev_define SOC_UART4      , 0x40004C00
dev_define SOC_UART5      , 0x40005000
dev_define SOC_I2C1       , 0x40005400
dev_define SOC_I2C2       , 0x40005800
dev_define SOC_I2C3       , 0x40005C00
dev_define SOC_CAN1       , 0x40006400
dev_define SOC_CAN2       , 0x40006800
dev_define SOC_PWR        , 0x40007000
dev_define SOC_DAC        , 0x40007400
dev_define SOC_UART7      , 0x40007800
dev_define SOC_UART8      , 0x40007C00
/* APB2 */
dev_define SOC_TIM1       , 0x40010000
dev_define SOC_TIM8       , 0x40010400
dev_define SOC_USART1     , 0x40011000
dev_define SOC_USART6     , 0x40011400
dev_define SOC_ADC1_ADC2_ADC3 , 0x40012000
dev_define SOC_SDIO       , 0x40012C00
dev_define SOC_SPI1       , 0x40013000
dev_define SOC_SPI4       , 0x40013400
dev_define SOC_SYSCFG     , 0x40013800
dev_define SOC_EXTI       , 0x40013C00
dev_define SOC_TIM9       , 0x40014000
dev_define SOC_TIM10      , 0x40014400
dev_define SOC_TIM11      , 0x40014800
dev_define SOC_SPI5       , 0x40015000
dev_define SOC_SPI6       , 0x40015400
/* AHB1 */
dev_define SOC_GPIOA      , 0x40020000
dev_define SOC_GPIOB      , 0x40020400
dev_define SOC_GPIOC      , 0x40020800
dev_define SOC_GPIOD      , 0x40020C00
dev_define SOC_GPIOE      , 0x40021000
dev_define SOC_GPIOF      , 0x40021400
dev_define SOC_GPIOG      , 0x40021800
dev_define SOC_GPIOH      , 0x40021C00
dev_define SOC_GPIOI      , 0x40022000
dev_define SOC_CRC        , 0x40023000
dev_define SOC_RCC        , 0x40023800
dev_define SOC_NVMC       , 0x40023C00
dev_define SOC_BKPSRAM    , 0x40024000
dev_define SOC_DMA1       , 0x40026000
dev_define SOC_DMA1_S0    , 0x40026010
dev_define SOC_DMA1_S1    , 0x40026028
dev_define SOC_DMA1_S2    , 0x40026040
dev_define SOC_DMA1_S3    , 0x40026058
dev_define SOC_DMA1_S4    , 0x40026070
dev_define SOC_DMA1_S5    , 0x40026088
dev_define SOC_DMA1_S6    , 0x400260A0
dev_define SOC_DMA1_S7    , 0x400260B8
dev_define SOC_DMA2       , 0x40026400
dev_define SOC_DMA2_S0    , 0x40026410
dev_define SOC_DMA2_S1    , 0x40026428
dev_define SOC_DMA2_S2    , 0x40026440
dev_define SOC_DMA2_S3    , 0x40026458
dev_define SOC_DMA2_S4    , 0x40026470
dev_define SOC_DMA2_S5    , 0x40026488
dev_define SOC_DMA2_S6    , 0x400264A0
dev_define SOC_DMA2_S7    , 0x400264B8
dev_define SOC_MAC        , 0x40028000
dev_define SOC_USB_OTG_HS , 0x40040000
/* AHB2 */
dev_define SOC_USB_OTG_FS , 0x50000000
dev_define SOC_DCMI       , 0x50050000
dev_define SOC_CRYP       , 0x50060000
dev_define SOC_HASH       , 0x50060400
dev_define SOC_RNG        , 0x50060800
/* AHB3 */
dev_define SOC_FSMC_B1    , 0xA0000000
dev_define SOC_FSMC_B1E   , 0xA0000100
dev_define SOC_FSMC_B23   , 0xA0000060
dev_define SOC_FSMC_B4    , 0xA00000A0

/* TCIP */
dev_define SOC_STK        , 0xE000E010
dev_define SOC_NVIC       , 0xE000E100
dev_define SOC_SCB        , 0xE000ED00
dev_define SOC_FPU        , 0xE000ED88
dev_define SOC_MPU        , 0xE000ED90
